*! 1.0.1 NJC 20 November 2000 
*! 1.0.0 NJC 20 July 2000 
program define _gnvals
        version 6
        gettoken type 0 : 0 
        gettoken g 0 : 0
        gettoken eqs 0 : 0

        syntax varlist [if] [in] [, by(varlist) MISSing]
        tempvar touse
        quietly {
                mark `touse' `if' `in'
                if "`missing'" == "" {
                        markout `touse' `varlist', strok 
                }
                sort `touse' `by' `varlist' 
                by `touse' `by' `varlist': gen `type' `g' = _n == 1 if `touse' 
                by `touse' `by' : replace `g' = sum(`g') if `touse' 
                by `touse' `by' : replace `g' = `g'[_N] if `touse' 
		
        }
end

